package com.ambow.core.controller;


import com.ambow.core.po.DqLabel;
import com.ambow.core.po.DqRole;
import com.ambow.core.po.GameLabel;
import com.ambow.core.service.DqLabelService;
import com.ambow.core.service.GameLabelService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dq.gamepropaganda.common.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author dq
 * @since 2022-09-05
 */
//跨域
@CrossOrigin
@RestController
@Api(tags="标签")
@RequestMapping("/admin/dqLabel")
public class DqLabelController {

    @Autowired
    private DqLabelService dqLabelService;
    @Autowired
    private GameLabelService gameLabelService;
    //新增标签
    @PostMapping("/addlabel")
    @ApiOperation("加标签")
    public R addlabel(DqLabel label){
        //查有无此标签名字的标签
        QueryWrapper<DqLabel> wrapper = new QueryWrapper<>();
        wrapper.eq("label_name",label.getLabelName());
        List<DqLabel> list = dqLabelService.list(wrapper);
        //如果有标签
        if (list == null || list.size()<1){
            //其实没有添加标签
            return R.ok().message("添加成功");
        }else {
            //如果没标签
            dqLabelService.save(label);
            return R.ok().message("恭喜添加成功");
        }
    }
    //查
    @GetMapping("/list")
    @ApiOperation("查所有标签")
    public R listAll(){
        List<DqLabel> list = dqLabelService.list();
        return R.ok().message("什么鬼").data("list",list);
    }
    //根据id查
    @PostMapping("/findLabelById")
    @ApiOperation("查单个标签")
    public R findLabelById(Integer labelId){
        DqLabel dqLabel = dqLabelService.getById(labelId);
        return R.ok().message("什么鬼").data("role",dqLabel);
    }
    //模糊查找标签
    @PostMapping("/findLabelLikeName")
    @ApiOperation("迷糊查标签")
    public R findLabelLikeName(String labelName){
        QueryWrapper<DqLabel> wrapper = new QueryWrapper<>();
        wrapper.like("label_name",labelName);
        List<DqLabel> list = dqLabelService.list(wrapper);
        return R.ok().data("wrapperList",list);
    }
    //给游戏加标签
    @PostMapping("/addGameLabel")
    @ApiOperation("给游戏加标签")
    public R addGameLabel(Integer gameId,Integer labelId){
        //判断此游戏有无此标签
        QueryWrapper<GameLabel> wrapper = new QueryWrapper<>();
        wrapper.eq("game_id",gameId).eq("label_id",labelId);
        List<GameLabel> list = gameLabelService.list(wrapper);
        if (list == null || list.size()<1){
            GameLabel gameLabel = new GameLabel();
            gameLabel.setGameId(gameId);
            gameLabel.setLabelId(labelId);
            gameLabelService.save(gameLabel);
            return R.ok();
        }else {
            return R.error().message("有此标签");
        }
    }
    //删除标签
    @PostMapping("/delLabel")
    @ApiOperation("删除标签")
    public R delLabel(Integer labelId){
        boolean b = dqLabelService.removeById(labelId);
        if (b){
            return R.ok();
        }else {
            return R.error().message("删除失败请联系管理员");
        }
    }


    //给游戏删除标签
    @PostMapping("/delGameLabel")
    @ApiOperation("给游戏加标签")
    public R delGameLabel(GameLabel gameLabel){
        //判断此游戏有无此标签
        QueryWrapper<GameLabel> wrapper = new QueryWrapper<>();
        wrapper.eq("game_id",gameLabel.getGameId()).eq("label_id",gameLabel.getLabelId());
        boolean b = gameLabelService.remove(wrapper);
        if (b){
            return R.ok();
        }else {
            return R.error().message("增加失败联系管理员");
        }

    }
    //批量删除标签
    @PostMapping("/delLabelList")
    @ApiOperation("批量删除标签")
    private R delLabelList(List<Integer> labelList){
        boolean b = dqLabelService.removeByIds(labelList);
        if (b){
            return R.ok();
        }else {
            return R.error().message("删除失败请联系管理员");
        }
    }

    //统计标签使用次数并排序
//    @GetMapping("/contListAndPaiXu/{shunxu}")
//    @ApiOperation("统计标签使用次数并排序 1正序 0倒序")
//    private R contListAndPaiXu(@PathVariable boolean shunxu){
//        QueryWrapper<GameLabel> wrapper = new QueryWrapper<>();
//        wrapper.
//        if (shunxu){
//
//        }
//
//    }

}

